smartdoc.a7111.com:   xml grundlagen   DTD   DOM   XSLT   XPath   XSL-FO   PDF

Menü


Kontakt:
smartdoc7@a7111.com

Allgemein

Die eXtensible Markup Language XML ist ein Werkzeug, um strukturierte Dokumente zu erzeugen, die sowohl für Menschen wie auch für Computer gleichermaßen gut lesbar und "verständlich" sind. Genauso wie das bekannte HTML verwendet XML für diesen Zweck Text-Auszeichnungen, Markup genannt. Im Gegensatz zu HTML muss aber bei XML kein umfangreiches Markup-Vokabular beherrscht werden, sondern man "erfindet" ganz einfach ein passendes Markup. Zum Beispiel um einen Brief, ein Buch oder sonstige Publikationen schreiben zu können. So gesehen ist XML einfach zu praktizieren, man ist nur an einige Syntax-Regeln gebunden.

Wie es in der Praxis mit XML tatsächlich aussieht, soll diese Arbeit vermitteln. Aus dem Umfang dieser Arbeit kann die Schlussfolgerung gezogen werden, dass es zum Thema XML doch einiges zu vermitteln gibt. Zum Beispiel zur XML-Sprachfamilie, zu den Metasprachen-Eigenschaften und zu den Präsentationstechniken für XML-Dokumente.


:: Metadaten und Markup


Meta-Daten sind dem Wortsinn nach „Daten über Daten“ und historisch gesehen eine Erweiterung des Begriffes „Markup“, auf Deutsch Auszeichnung. Eine unbewusst verwendete Art des Markups ist z.B. die Interpunktion im normalen Text: Beistrich, Strich- und Doppelpunkt, Frage- und Rufzeichen sowie im weitesten Sinne auch Klammern, Leerzeichen und Leerzeilen. Dieses "visuelle" Markup unterstützt den Leser beim Erfassen der Information.

::: Korrektursymbole im Redaktionswesen

Ein konkretes Beispiel für Markup ist die im Redaktionswesen noch immer praktizierte Methode, mit Korrektursymbolen Änderungs- und Fehlerhinweise zu notieren (nach Forssman [6]).

Korrektursymbole

::: Steuerzeichen als Markup

Eine andere Art des Markups sind die Steuerzeichen im ASCII-Code, zum Beispiel CR, LF, FF, SOH, STX, ETX, EOT. Diese und andere "unsichtbare" Steuerzeichen liegen im Bereich $00 - $1F des ASCII-Codes und werden unter anderem für die Datenübertragung verwendet.
	SOH  TelexNr  STX  Message... ETX  CRC  EOT 
				
	SOH ... Start of Header 
	STX ... Start of Text 
	ETX ... End of Text
	EOT ... End of Transmission
	CRC ... Checksum
				

::: HTML, die Hypertext Markup Language

Die genannten Beispiele für allgemeines Markup zeigen die vielfältigen Anwendungsmöglichkeiten, oder besser gesagt, Interpretationsmöglichkeiten, was alles unter Markup zu verstehen ist. Eine spezielle Art von Markup ist jene Notation, die mit HTML und dem Internet populär geworden ist, und die auch für XML verwendet wird.

Innerhalb von Spitzklammern, also zwischen einem Kleiner- und einem Größer-Symbol steht das Markup, dieses Markup wird im konkreten Fall HTML-Tag genannt. Ein Tag-Paar, bestehend aus Start-Tag "<tagname>" und Ende-Tag "</tagname>", bildet einen zusammengehörigen Komplex, der Dokument-Element genannt wird. Dokument-Elemente wiederum dienen zum Transport von Inhalt, der entweder aus Text oder weiteren Dokument-Elementen gebildet wird. Die Summe der definierten HTML-Tags mit zugehörigen Attributen bildet den Sprachschatz, den diese Markup-Sprache dem Autor zur Verfügung stellt. Das folgende Beispiel zeigt exemplarisch einen typischen (und sehr fehlerhaften!) HTML-Code und das Ergebnis, wie es von einem Browser trotz Fehler richtig dargestellt wird:

HTML-Code

Gängige Browser sind sehr tolerant bei HTML-Dokumenten. Bei einem XML-Dokument würden vergleichbar schlampige Konstrukte nicht akzeptiert werden, da die strikte Einhaltung der sogenannten „Wellformedness“ eine wesentliche Voraussetzung für die Erzeugung eines eindeutigen Dokumenobjektmodells (DOM) ist.

::: Dublin Core Metadaten

Das bekannteste Vokabular für Meta-Daten ist Dublin Core mit einem definierten Satz an Attributen für eine einheitliche Dokumentkategorisierung. Der folgende HTML-Code zeigt die formale Beschreibung einer Verlags-Publikation mit Dublin-Core:
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="DC.Format" content="text/html">
   <meta name="DC.Language" content="de">
   <meta name="DC.Identifier" content="http://oeaw.ac.at/">
   <meta name="DC.Source" content="ISBN3-7001-2954-8">
   <meta name="DC.Title" content="Civilisation at the Foot of Mt. Sham-po">
   <meta name="DC.Subject" 
      content="Asienforschung: The Royal House of lHa Bug-pa-can">
   <meta name="DC.Creator" 
      content="Tsering GYALBO, Guntram HAZOD, Per K. SORENSEN">
   <meta name="DC.Publisher" 
      content="Verlag der Österreichischen Akademie der Wissenschaften">
   <meta name="DC.Rights" 
      content="Verlag der Österreichischen Akademie der Wissenschaften">
   <meta name="DC.Description" 
      content="The present publication offers to the academic readership 
      for the first time a translation, transliteration and facsimile  
      edition of three medieval and rare manuscripts recently traced  
      in the Central Tibetan monastery of g.Ya'-bzang">
				
Diese Attribute sind allerdings vorwiegend von administrativem Nutzen und bieten kaum Hilfe für eine substantielle inhaltliche Charakterisierung von Dokumenten.


:: Die Metasprachen SGML und XML

Die Standard Generalized Markup Language SGML wurde 1969 bei IBM von Charles Goldfarb, Ed Mosher und Ray Lorie entwickelt (deren Initialen sich im Begriff GML wiederfinden), und Mitte der 80er-Jahre als Standard anerkannt (ISO-8879).
SGML und XML SGML ist eine Metasprache, die hauptsächlich im Verlagswesen verwendet wurde und eigentlich nur deshalb einem breiteren Anwenderkreis bekannt ist, da sie als Basis für die Entwicklung der Markup-Sprache HTML diente.

Als in den 90er-Jahren erkannt wurde, das HTML nicht mehr für künftige Web-Anforderungen ausreicht, wurde das Stylesheet-Konzept von SGML adaptiert, um anspruchsvollere Formatierungen zu ermöglichen (Cascading Style Sheets CSS). Letztendlich setzte sich aber die Erkenntnis durch, dass für viele zukünftige Web-Anwendungen eine Alternative zu HTML erforderlich war.

Die SGML selbst war aufgrund ihrer Komplexität nicht geeignet, daher wurde sie auf ihre wesent­lichen Inhalte reduziert und als „eXtensible Markup Language“ XML neu vorgestellt. XML ist eine Empfehlung (Recommendation) des W3C-Konsortiums und somit ein defacto-Standard. Abgesehen von diesem formalen Status hat sich XML allein aufgrund seiner Eigenschaften als weltweit akzeptierter Standard für Archivierung, Transport und Präsentation von Dokumenten etabliert. Technisch gesehen ist XML sowohl Sprachwerkzeug (Syntax), Metasprache (Werkzeug) und Sprachfamilie (Anwendungen) zugleich.

Als Metasprache dient XML zur Entwicklung neuer Markup-Sprachen und als Sprachfamilie umfasst XML neben den Kernsprachen XSLT, XPath, XSL-FO, XLink, XPointer und XML-Schemas bereits mehrere hundert Anwendungssprachen wie zum Beispiel SOAP, WSDL, XMLDSig, SAML, BPEL, eBXML, GovXML, RuleML, LegalXML usw.


:: Hello World Beispiel

Wieviel Aufwand erfordert es, um mit einer Programmiersprache die Worte "Hello World" am Bildschirm anzuzeigen. In Hochsprachen wie Java und dotNET ist eine Compilation, oft unter Einbindung von spezifischen Funktionsbibliotheken, erforderlich. In HTML geht es relativ einfach,
man speichert das folgenden Script in einer HTML-Datei und benutzt einen Browser zur Anzeige:
	<html>
	   <body>
	     <p> Hello World </p>
	   </body>
	</html>
In XML geht es noch einfacher: <Greetings> Hello World </Greetings>. Anstelle eines von HTML vorgegebenen Vokabulars (body, p) wird ein passendes Vokabular (Greetings) erfunden. Zugleich wird damit auch eine neue Markup-Sprache erfunden, die in diesem Fall allerdings nur ein einziges Sprach-Element besitzt.

::: Ein mehrsprachiges Hello-World Beispiel

Um das Hello-World Beispiel etwas kreativer zu gestalten, bietet sich an, ein mehrsprachiges Gruß-Dokument zu entwerfen:

Hello World 1

Dieses Beispiel zeigt, das XML-Dokumente problemlos anzeigbar sind. Voraussetzung für die korrekte Darstellung der kyrillischen Zeichen (strastwuij mir), die mühsam als Unicode-Entities eingetippt wurden, ist natürlich die slawische Zeichensatz-Erweiterung. Aber das ist im Moment nebensächlich, irgendwie überraschend ist eigentlich die Tatsache, dass überhaupt etwas angezeigt wird. Man erkennt, dass ein Browser XML-Dateien lesen und darstellen kann, dass er also einen sogenannten "XML-Parser" besitzt und ein "Default-Stylesheet" für die Darstellung von XML-Dateien anwendet. Bis auf weiteres soll diese editor-ähnliche Darstellungsart reichen (mangels Vorstellung, wie "Grüße an die Welt" repräsentativ aussehen sollen).

::: XML erlaubt Kraut und Rüben, aber keine Fehler

Um zu zeigen, dass tatsächlich eine beliebig neue Sprache erfunden werden kann, wird das Beispiel erweitert: Äpfeln und Birnen werden symbolisch in einen Korb geworfen und Kraut und Rüben "durcheinander gebracht":

Hello World 2

Der Versuch, das erweiterte Dokument anzuzeigen, schlägt fehl. Es wird aber nicht der kodierte Scherz mit Obst und Gemüse bemängelt, sondern formale Fehler:
  • Die Worte Äpfel und Rüben enthalten unzulässige Umlaute. XML erwartet Unicode-Zeichen,
    ein normaler Editor liefert aber Sonderzeichen aus dem erweiterten ASCII-Zeichensatz
    (ISO-8859-1),
  • und das Konstrukt Kraut und Rüben entspricht nicht der XML-Namenskonvention.
    Element- und Attributnamen müssen sich, wie in vielen Programmiersprachen, an eine
    strikte Konvention halten, die unter anderem Leerzeichen nicht zuläßt.
Das Unicode Problem wird gelöst, indem ein ISO-Zeichensatz für das Dokument angegeben wird. Der richtige Ort für diese Spezifikation ist die formale XML-Deklaration, die in der ersten Zeile eines XML-Dokumentes stehen muß (siehe nachfolgendes Beispiel). Der fehlerhafte Namens-Konstrukt kann ebenfalls formal richtig gestellt werden, wird dadurch aber nicht sinnvoller. Daraus läßt sich erkennen, dass XML-Parser sehr genau auf korrekten Syntax (Wellformedness) achten. Und der kodierte "Scherz" läßt erkennen, dass es wünschenswert ist, das Vokabular einer XML-Sprache genau zu definieren, um nur erwünschte Inhalte zuzulassen. Dies ist Aufgabe einer Document Type Definition (DTD) oder eines XML-Schemas (XSD).

::: Document Type Definition (DTD)

Für die Erzeugung gültiger (valider) XML-Dokumente ist ein Regelwerk erforderlich, dass die inhaltliche Struktur des Dokumentes beschreibt. So ein Regelwerk kann direkt in ein XML-Dokument eingebettet werden, wie das nachfolgende Beispiel zeigt:

Hello World 3

Das eingebettete Regelwerk, eine DTD, kann unmittelbar nach der XML-Deklaration notiert werden. Im gezeigten Beispiel wird ein HelloWorld-Element spezifiziert, das als Inhalt beliebig viele Greetings-Elemente enthalten kann (Kardinalität *). Ein Greetings-Element darf als Inhalt nur reinen Text enthalten (#PCDATA), und es besitzt ein language-Attribut für die Angabe der Gruß-Sprache. Die zulässigen Sprachen sind als Enumeration (Deutsch | Englisch | Russisch) für das Attribut vorgegeben, wobei "Deutsch" der Default-Wert ist bei fehlendem Attribut.

Damit kann das HelloWorld-Dokument von einem validierenden Parser nun auch auf Gültigkeit geprüft werden, und würde wegen des Korb- und Kraut-Elementes als üngültig abgelehnt. Browser sind leider trotzt vorhandenem Regelwerk sehr tolerant und würden keine Fehlermeldung erzeugen, man ist also auf validierende Editoren angewiesen (z.B. XMLSpy), um fehlerfreie Dokumente zu erzeugen.

Was nun noch fehlt, ist eine "anspruchsvolle" Präsentation. Dafür ist ein Stylesheet erforderlich, das im gezeigten Beispiel bereits durch eine sogenannte Processing-Instruction referenziert wird:
	<?xml-stylesheet href="hello.xsl" type="text/xsl" ?>

::: XSLT Stylesheet

Das nachfolgende Code-Beispiel zeigt den grundlegenden Aufbau eines XSLT-Stylesheets mit den entsprechenden Templates für die Transformation des XML-Dokumentes in das darunter gezeigte HTML-Ergebnis:

Hello World 3